import request from '@/api/axios'
import {AxiosPromise} from 'axios'
import {DataRes} from '@/api/config'
import {BasePhysicalExamination} from './index'

/**
 * @description: 表单属性
 * @return {*}
 */
export interface CheckBody extends BasePhysicalExamination {
  eyeGroundState: string // 眼底
  eyeGroundStateAbnormal?: string | null //眼底异常信息
  skinState: string // 皮肤
  skinStateOthers?: string | null // 其他皮肤
  cornOpacState: string // 巩膜
  cornOpacStateOthers?: string | null // 其他巩膜
  lympGlanState: string // 淋巴结
  lympGlanStateOthers?: string | null // 其他淋巴结
  barrelChestState: string // 肺-桶装肺
  breathSoundState: string // 肺-呼吸音
  breathSoundStateAbnormal?: string | null // 呼吸音异常信息
  raleState: string // 肺-罗音
  raleStateOthers?: string | null // 其他罗音
  heartRate?: number // 心脏-心率
  rhythmState: string // 心脏-心律
  murmurState: string // 心脏-杂音
  murmurStateExist?: string | null // 杂音信息
  tendernessState: string // 腹部-压痛
  tendernessStateExist?: string | null // 压痛信息
  massState: string // 腹部-包块
  massStateExist?: string | null // 包块信息
  hapaState: string // 腹部-肝大
  hapaStateExist?: string | null //肝大信息
  spleState: string //  腹部-脾大
  spleStateExist?: string | null // 脾大信息
  shiftDullState: string // 腹部-移动性浊音
  shiftDullStateExist?: string | null // 移动性浊音信息
  edemaExtrState: string // 下肢水肿
  arteState: string // 足背动脉搏动
  digtExamState: string // 肛门指诊
  digtExamStateOthers?: string | null // 肛门指诊其他信息
  breast: string | null // 乳腺
  breastCheckboxs: string[] // 乳腺复选
  breastOthers?: string | null // 其他乳腺
  vulvaState: string // 外阴
  vulvaStateAbnormal?: string | null // 外阴异常信息
  vaginoState: string //阴道
  vaginoStateAbnormal?: string | null // 阴道异常信息
  cervicalState: string // 宫颈
  cervicalStateAbnormal?: string | null // 宫颈异常信息
  palaceState: string // 宫体
  palaceStateAbnormal?: string | null // 宫体异常信息
  annexaUteriState: string // 附件
  annexaUteriStateAbnormal?: string | null // 附件异常信息
  bodyOther?: string | null // 查体其他
}

// 剔除后端不要的属性
export type CheckBodyParams = Omit<CheckBody, 'breastCheckboxs'> & {
  haveWoman?: number // 是否包含妇科 - 0、否， 1、是
}

/**
 * @description: 保存查体
 * @param {CheckBody} data
 * @return {*}
 */
export const saveCheckBody = (data: CheckBodyParams): AxiosPromise<DataRes<undefined>> => {
  return request({
    url: '/api/checkBody/save',
    method: 'post',
    data
  })
}

/**
 * @description: 根据体检登记表id获取查体数据
 * @param {string} checkupRegisterId
 * @return {*}
 */
export const getCheckBody = (checkupRegisterId: string): AxiosPromise<DataRes<CheckBody>> => {
  return request({
    url: `/api/checkBody/get/${checkupRegisterId}`,
    method: 'get'
  })
}

/**
 * @description: 拒检查体
 * @param {BasePhysicalExamination} data
 * @return {*}
 */
export const rejectCheckBody = (data: BasePhysicalExamination): AxiosPromise<DataRes<undefined>> => {
  return request({
    url: '/api/checkBody/reject',
    method: 'post',
    data
  })
}
